/**
 * 
 */
package br.com.sguc.entidade;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

/**
 * @author Jonas Nadolny - 23/08/2013
 * 
 */
@Entity
public class Campeonato implements Serializable {

	private static final long serialVersionUID = -1505902649118689313L;

	@Id
	@GeneratedValue(strategy = GenerationType.AUTO)
	@Column(name = "id_campeonato", unique = true, nullable = false)
	private Integer idCampeonato;

	@Column(name = "nome_campeonato", length = 50)
	private String nomeCampeonato;

	@Column(name = "status", length = 20)
	private String status;

	@Column(name = "uf", length = 5)
	private String uf;

	@Column(name = "cidade", length = 50)
	private String cidade;

	@Column(name = "descricao", length = 140)
	private String descricao;

	@Column(name = "tipo_pontuacao", length = 80)
	private String tipoPontuacao;

	@Column(name = "tipo_campeonato", length = 80)
	private String tipoCampeonato;
	
	@ManyToOne
	@JoinColumn(name = "id_usuario")
	private Usuario usuarioOrganizador;


	public String getTipoCampeonato() {
		return tipoCampeonato;
	}

	public void setTipoCampeonato(String tipoCampeonato) {
		this.tipoCampeonato = tipoCampeonato;
	}

	@Column(name = "imagem", length = 100)
	private String imagem;

	@Column(name = "data_criacao")
	private Date dataCriacao;

	@Column(name = "data_alteracao")
	private Date dataAlteracao;

	@Column(name = "fim_inscricao")
	private Date fimInscricao;

	@Column(name = "data_inicio_campeonato")
	private Date dataInicioCampeonato;

	@Column(name = "data_fim_campeonato")
	private Date dataFimCampeonato;
		
	@OneToMany(mappedBy = "campeonato", targetEntity = Equipe.class, fetch = FetchType.EAGER, cascade = CascadeType.ALL)
	private List<Equipe> equipe;
	
	@OneToMany(mappedBy = "campeonatoEquipe",  targetEntity = Partida.class,fetch = FetchType.LAZY,  cascade = CascadeType.ALL)
	private List<Partida> partida;
	
	@ManyToOne
	@JoinColumn(name="id_modalidade")
	private Modalidade modal;
	
	// Getter And Setters
		
	public List<Equipe> getEquipe() {
		return equipe;
	}

	public List<Partida> getPartida() {
		return partida;
	}

	public void setPartida(List<Partida> partida) {
		this.partida = partida;
	}

	public void setEquipe(List<Equipe> equipe) {
		this.equipe = equipe;
	}

	public Integer getIdCampeonato() {
		return idCampeonato;
	}

	public void setIdCampeonato(Integer idCampeonato) {
		this.idCampeonato = idCampeonato;
	}

	public String getNomeCampeonato() {
		return nomeCampeonato;
	}

	public void setNomeCampeonato(String nomeCampeonato) {
		this.nomeCampeonato = nomeCampeonato;
	}

	public String getStatus() {
		return status;
	}

	public void setStatus(String status) {
		this.status = status;
	}

	public String getUf() {
		return uf;
	}

	public void setUf(String uf) {
		this.uf = uf;
	}

	public String getCidade() {
		return cidade;
	}

	public void setCidade(String cidade) {
		this.cidade = cidade;
	}

	public String getDescricao() {
		return descricao;
	}

	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}

	public String getTipoPontuacao() {
		return tipoPontuacao;
	}

	public void setTipoPontuacao(String tipoPontuacao) {
		this.tipoPontuacao = tipoPontuacao;
	}

	public String getImagem() {
		return imagem;
	}

	public void setImagem(String imagem) {
		this.imagem = imagem;
	}

	public Date getDataCriacao() {
		return dataCriacao;
	}

	public void setDataCriacao(Date dataCriacao) {
		this.dataCriacao = dataCriacao;
	}

	public Date getDataAlteracao() {
		return dataAlteracao;
	}

	public void setDataAlteracao(Date dataAlteracao) {
		this.dataAlteracao = dataAlteracao;
	}

	public Date getFimInscricao() {
		return fimInscricao;
	}

	public void setFimInscricao(Date fimInscricao) {
		this.fimInscricao = fimInscricao;
	}

	public Date getDataInicioCampeonato() {
		return dataInicioCampeonato;
	}

	public void setDataInicioCampeonato(Date dataInicioCampeonato) {
		this.dataInicioCampeonato = dataInicioCampeonato;
	}

	public Date getDataFimCampeonato() {
		return dataFimCampeonato;
	}

	public void setDataFimCampeonato(Date dataFimCampeonato) {
		this.dataFimCampeonato = dataFimCampeonato;
	}

	public Modalidade getModal() {
		return modal;
	}

	public void setModal(Modalidade modal) {
		this.modal = modal;
	}

	public Usuario getUsuarioOrganizador() {
		return usuarioOrganizador;
	}

	public void setUsuarioOrganizador(Usuario usuarioOrganizador) {
		this.usuarioOrganizador = usuarioOrganizador;
	}
	
}
